macro_rules! calculate {
    //单个`eval`的模式
    (eval $e:expr) => (
            {
                let val: usize = $e; //Force types to be integers
                println!("{} = {}",stringify!($e), val);
            }
        );
    // 递归地拆解多重的`eval`
    (eval $e:expr, $(eval $es:expr), +) => (
            calculate!{eval $e}
            calculate!{$(eval $es), + } 
        );
}
fn main() {
    calculate! { //可变参数`calculate!`
        eval 1 + 2,
        eval 3 + 4,
        eval (2 * 3) + 1
    }
}
